package com.ytclub.practice.server.service;

import com.ytclub.practice.api.common.PageResult;
import com.ytclub.practice.api.req.GetPracticeSubjectsReq;
import com.ytclub.practice.api.req.GetUnCompletePracticeReq;
import com.ytclub.practice.api.vo.*;
import com.ytclub.practice.server.entity.dto.PracticeSetDTO;
import com.ytclub.practice.server.entity.dto.PracticeSubjectDTO;

import java.util.List;

/**
 * 专项练习服务层接口类
 *
 * @author: HuangQi
 * @date: Created in 12:40 2024/4/26
 * @description: 专项练习服务层接口
 */
public interface PracticeSetService {

    /**
     * 获取专项练习内容
     *
     * @return 专项练习内容
     */
    List<SpecialPracticeVO> getSpecialPracticeContent();

    /**
     * 开始练习
     *
     * @param dto 查询条件
     * @return 练习套卷信息
     */
    PracticeSetVO addPractice(PracticeSubjectDTO dto);

    /**
     * 获取练习题
     *
     * @param req 请求参数
     * @return 练习题目
     */
    PracticeSubjectListVO getSubjects(GetPracticeSubjectsReq req);

    /**
     * 获取题目详情
     *
     * @param dto 查询题目条件
     * @return 题目详情
     */
    PracticeSubjectVO getPracticeSubject(PracticeSubjectDTO dto);

    /**
     * 获取套题内容
     *
     * @param dto 查询条件
     * @return 套题内容
     */
    PageResult<PracticeSetVO> getPreSetContent(PracticeSetDTO dto);

    /**
     * 获取未完成的练题内容
     *
     * @param req 分页信息
     * @return 未完成的练题内容
     */
    PageResult<UnCompletePracticeSetVO> getUnCompletePractice(GetUnCompletePracticeReq req);
}
